package com.team.game.Game;


import android.graphics.Canvas;
import android.util.Log;
import android.view.MotionEvent;

import com.team.game.framework.Abstract.GesturesInfo;
import com.team.game.framework.Game;

import java.util.ArrayList;


public class Gestures {

    private static final String TAG = "Gestures";

    private Game game;
    private int Num = 0;
    public ArrayList<Wizard> WizardsArray;
    private int CurrentWizard = 0;

    public Gestures(Game game, int Num, int[] Wiz) {
        Log.i(TAG, "Processing constructor");


        this.game = game;
        this.Num = Num;
        //получаем класс левелс чтобы иметь доступ к координатам крипов
        WizardsArray = new ArrayList<>(Num);
        for (int i = 0; i < Num; i++) {
            switch (Wiz[i]) {
                case 1: {
                    WizardsArray.add(i, new Wizard(game));
                    break;
                }
            }
        }
//        rectProgressBar1 = new RectF ();
//        rectProgressBar1.set (10 * Scale_X_Y.Scale_X, 10 * Scale_X_Y.Scale_X, 132 * Scale_X_Y.Scale_X, 132 * Scale_X_Y.Scale_X);

//        paint = new Paint ();
//        paint.setStyle (Paint.Style.STROKE);
//        paint.setColor (Color.RED);
//        paint.setStrokeWidth (20);
//
//        pntProgressBars = new Paint (Paint.ANTI_ALIAS_FLAG);
    }


    public void draw(Canvas canvas) {

        for (int i = 0; i < Num; i++)
            WizardsArray.get(i).drawSpell(canvas);

//        if (i > 40) {
//            //drawing
//            if (circle) {
//
////                canvas.drawCircle (gest.getBoundingBox ().left + gest.getBoundingBox ().width () / 2,
////                        gest.getBoundingBox ().top + gest.getBoundingBox ().height () / 2,
////                        gest.getBoundingBox ().height () / 2, paint);
//                canvas.drawBitmap (bmp, null, gest.getBoundingBox (), null);
//            }
//            if (square) {
//                canvas.drawRect (gest.getBoundingBox (), paint);
//            }
//        }
    }


    public void update() {
        for (int i = 0; i < Num; i++)
            WizardsArray.get(i).updateSpell();
//        circle = square = false;
//        if (info != null) {
//            gest = info.gesture;
//            switch (info.prediction.name) {
//                case "circle":
//                    circle = true;
//                    gest.getBoundingBox ().set (gest.getBoundingBox ().left,
//                            gest.getBoundingBox ().centerY () - gest.getBoundingBox ().width () / 2,
//                            gest.getBoundingBox ().right,
//                            gest.getBoundingBox ().centerY () + gest.getBoundingBox ().width () / 2);
//                    break;
//                case "square":
//                    square = true;
//                    break;
//                default:
//                    throw new RuntimeException ("No gesture");
//            }
//            if (this.infos.gesture != info.gesture) {
//                //bmp = info.gesture.toBitmap ((int) info.gesture.getBoundingBox ().width (),
//                //(int) info.gesture.getBoundingBox ().height (), 0, Color.RED);
//                i = 100;
//                Log.i (TAG, "gesture changed");
//            }
//            this.infos.gesture = info.gesture;
//        }
    }


//    public void drawProgressBars (Canvas canvas) {
//
//        canvas.drawBitmap (bmpProgressBar1, null, rectProgressBar1, null);
//
//        //серый фон
//        pntProgressBars.setColor (Color.parseColor ("#c4c4c4"));
//        pntProgressBars.setStrokeWidth (10);
//        pntProgressBars.setStyle (Paint.Style.STROKE);
//        canvas.drawCircle (rectProgressBar1.left + rectProgressBar1.width () / 2,
//                rectProgressBar1.top + rectProgressBar1.height () / 2,
//                rectProgressBar1.height () / 2, pntProgressBars);
//
//        //желтая полоса прогрузки
//        pntProgressBars.setColor (Color.parseColor ("#FFDB4C"));
//        pntProgressBars.setStyle (Paint.Style.STROKE);
//        canvas.drawArc (rectProgressBar1, 270, ((i * 360) / 100), false, pntProgressBars);
//
//        //счетчик
//        pntProgressBars.setStrokeWidth (3);
//        pntProgressBars.setTextAlign (Paint.Align.CENTER);
//        pntProgressBars.setColor (Color.BLACK);
//        pntProgressBars.setTextSize (17 * Scale_X_Y.relation);
//        canvas.drawText ("" + i, rectProgressBar1.left + rectProgressBar1.width () / 2,
//                rectProgressBar1.top + rectProgressBar1.height () / 2 + (pntProgressBars.getTextSize () / 4), pntProgressBars);
//
//        if (!locked) {
//            if (i != 0)
//                i--;
//        }
//    }

    public void pause(boolean enabled) {
        game.activateGestures(!enabled);
    }

    public boolean setGestureInfo(GesturesInfo GestureInfo, int NumWizard) {
        return WizardsArray.get(NumWizard).ActiveSpell(GestureInfo);
    }

    public void TapDown(MotionEvent motionEvent) {
        //for( int i = 0 ; i <  Num ; i++)
        //{
        //if(tap up rect[] ...)
        // ReplacementWizards(i);
        //}
        //else
        WizardsArray.get(CurrentWizard).Tap(motionEvent);
    }

    public void ReplacementWizards(int CurWizard) {
        //game.setCurrentWizard(CurWizard);
    }
}


